home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / e / capus2.lha / capus2 / LibTests / TEST_vector.library / vectordemo.e < prev    next >
Encoding:
Text File  |  1995-04-05  |  10.0 KB  |  330 lines

  1. /*======<<< Peps Header >>>======
  2.  PRGVERSION '0'
  3.  ================================
  4.  PRGREVISION '0'
  5.  ================================
  6.  AUTHOR      'NasGûl'
  7.  ===============================*/
  8. /*======<<<   History   >>>======
  9.  Vector.library démo.
  10.  ===============================*/
  11.  
  12.  
  13. MODULE 'libraries/vector'
  14. MODULE 'vector'
  15. MODULE 'graphics/displayinfo'
  16. OPT LARGE
  17.  
  18. OBJECT rworld
  19.     flags:INT
  20.     number:INT
  21.     theobject:LONG
  22. ENDOBJECT
  23. /* ====================================================== */
  24. /* WARNING !! WARNING !! WARNING !! WARNING !! WARNING !! */
  25. /* ====================================================== */
  26. /*
  27.     There a mistake in the source code of the vector.library,
  28. object are define like this in vector.h,but without the o_flags in ASM source.
  29. */
  30.  
  31. OBJECT robject
  32.     o_point_data:LONG
  33.     o_area_data:LONG
  34.     o_move_table:LONG
  35.     o_flags:INT             /* <- This flags don't appear in ASM include,but it is present in C include.   */
  36.     o_pos_x:INT             /* i suppose that's the C include is good because all ASM examples crash my */
  37.     o_pos_y:INT             /* machine !!*/
  38.     o_pos_z:INT
  39.     o_rot_x:INT
  40.     o_rot_y:INT
  41.     o_rot_z:INT
  42. ENDOBJECT
  43. /* =================================== */
  44. /* ALL OBJECTS ARE CONVERT WITH 3DView */
  45. /* =================================== */
  46. DEF myvscreen:PTR TO newvscreen
  47. DEF myjoy:PTR TO joy
  48. /*"All Object definitions"*/
  49. /*============================*/
  50. DEF pcone_obj:PTR TO robject
  51. DEF pcone_move:PTR TO INT
  52. DEF pcone_world:PTR TO rworld
  53. /*===========================*/
  54. DEF pcube_obj:PTR TO robject
  55. DEF pcube_move:PTR TO INT
  56. DEF pcube_world:PTR TO rworld
  57. /*===========================*/
  58. DEF pcylinder_obj:PTR TO robject
  59. DEF pcylinder_move:PTR TO INT
  60. DEF pcylinder_world:PTR TO rworld
  61. /*==============================*/
  62. DEF phsphere_obj:PTR TO robject
  63. DEF phsphere_move:PTR TO INT
  64. DEF phsphere_world:PTR TO rworld
  65. /*==============================*/
  66. DEF ppyramid_obj:PTR TO robject
  67. DEF ppyramid_move:PTR TO INT
  68. DEF ppyramid_world:PTR TO rworld
  69. /*===============================*/
  70. DEF psphere1_obj:PTR TO robject
  71. DEF psphere1_move:PTR TO INT
  72. DEF psphere1_world:PTR TO rworld
  73. /*================================*/
  74. DEF psphere2_obj:PTR TO robject
  75. DEF psphere2_move:PTR TO INT
  76. DEF psphere2_world:PTR TO rworld
  77. /*=============================*/
  78. DEF psphere3_obj:PTR TO robject
  79. DEF psphere3_move:PTR TO INT
  80. DEF psphere3_world:PTR TO rworld
  81. /*================================*/
  82. DEF ptetra_obj:PTR TO robject
  83. DEF ptetra_move:PTR TO INT
  84. DEF ptetra_world:PTR TO rworld
  85. /*=================================*/
  86. DEF ptorus_obj:PTR TO robject
  87. DEF ptorus_move:PTR TO INT
  88. DEF ptorus_world:PTR TO rworld
  89. /*===================================*/
  90. DEF pwheel_obj:PTR TO robject
  91. DEF pwheel_move:PTR TO INT
  92. DEF pwheel_world:PTR TO rworld
  93. /*===================================*/
  94. DEF vector_obj:PTR TO robject
  95. DEF vector_move:PTR TO INT
  96. DEF vector_world:PTR TO rworld
  97. /**/
  98. DEF mycoltab:PTR TO INT
  99. DEF myworld:PTR TO rworld
  100. DEF viewstruct
  101. /*"p_InitData() :initilise les datas."*/
  102. PROC p_InitData()
  103.     myvscreen:=[0,0,     /* Linke obere Ecke des Screen */
  104.                640,512, /* Breite und Höhe */
  105.                3,       /* Tiefe */
  106.                0,0,     /* Screentitel- und -randfarben */
  107.                HIRESLACE_KEY,       /* Screenmode */
  108.                NIL,    /* Zeiger auf Font des Screens; hier Standard-Font */
  109.                'vector.library  ©1991 by A.Lippert',
  110.                0,       /* Flags (bisher ungenutzt) */
  111.                0,0,     /* Offset des Vektorfensters im Screen (bisher nicht unterstützt) */
  112.               640,512, /* Breite und Höhe des Vektorfensters (muß bisher identisch sein mit Breite und Höhe des Screens) */
  113.               3]:newvscreen       /* von Vektoranimation wirklich genutzte Bitplanes */
  114.  
  115. myjoy:=[50,50000,-50000,3,3,3]:INT
  116.  
  117.  
  118. pcone_move:=[360,0,0,0,1,0,0,
  119.              360,0,0,0,1,1,1,
  120.              END_1]:INT
  121.  
  122. pcylinder_move:=[360,0,0,0,1,1,0,
  123.                  100,10,0,0,0,0,1,
  124.                  END_1]:INT
  125.  
  126. pwheel_move:=[180,-10,0,0,0,0,1,
  127.               END_1]:INT
  128.  
  129. phsphere_move:=[360,0,0,42,0,1,0,
  130.                 360,0,0,5,0,2,0,
  131.                 END_1]:INT
  132.  
  133. psphere1_move:=[400,0,0,-100,1,1,1,
  134.                 450,10,0,0,1,1,1,
  135.                 100,-100,0,0,1,0,0,
  136.                END_1]:INT
  137.  
  138. psphere2_move:=[100,-10,0,0,1,0,0,
  139.                 100,0,10,0,1,1,1,
  140.                 END_1]:INT
  141.  
  142. ppyramid_move:=[360,0,0,0,1,1,1,
  143.                 360,0,0,-50,1,1,1,
  144.                 END_1]:INT
  145.  
  146. ptetra_move:=[360,0,0,0,1,1,1,
  147.               360,0,0,-50,1,1,1,
  148.               100,0,-50,0,1,0,1,
  149.               END_1]:INT
  150.  
  151. ptorus_move:=[200,0,5,0,0,0,0,
  152.               10,0,0,0,0,0,0,
  153.               360,0,0,0,1,1,1,
  154.               90,0,0,0,1,0,0,
  155.               90,0,0,0,0,1,0,
  156.               90,0,0,0,0,0,1,
  157.               200,0,0,-70,0,0,0,
  158.               90,0,0,0,0,1,0,
  159.               200,0,0,-80,0,0,0,
  160.               100,-10,0,0,1,0,0,
  161.               END_1]:INT
  162.  
  163. vector_move:=[100,10,0,0,0,0,0,
  164.              360,0,0,-10,1,0,0,
  165.              50,0,0,0,0,0,0,
  166.              200,10,0,0,1,1,1,
  167.              END_1]:INT
  168.  
  169. pcone_obj:=[{pcone_pts},{pcone_fcs},pcone_move,0,
  170.            0,0,-2000,
  171.            90,0,0]:robject
  172.  
  173. pcylinder_obj:=[{pcylinder_pts},{pcylinder_fcs},pcylinder_move,0,
  174.            0,0,-1250,
  175.            90,0,0]:robject
  176.  
  177. pwheel_obj:=[{pwheel_pts},{pwheel_fcs},pwheel_move,0,
  178.            1000,0,-1250,
  179.            90,0,0]:robject
  180.  
  181. phsphere_obj:=[{phsphere_pts},{phsphere_fcs},phsphere_move,0,
  182.            0,0,-15500,
  183.            90,0,0]:robject
  184.  
  185. psphere1_obj:=[{psphere1_pts},{psphere1_fcs},psphere1_move,0,
  186.            0,0,380,
  187.            90,0,0]:robject
  188.  
  189. psphere2_obj:=[{psphere2_pts},{psphere2_fcs},psphere2_move,0,
  190.            1000,0,-1810,
  191.            0,0,0]:robject
  192.  
  193. ppyramid_obj:=[{ppyramid_pts},{ppyramid_fcs},ppyramid_move,0,
  194.            0,0,-500,
  195.            0,0,0]:robject
  196.  
  197. ptetra_obj:=[{ptetra_pts},{ptetra_fcs},ptetra_move,0,
  198.            0,0,-1800,
  199.            0,90,0]:robject
  200.  
  201. ptorus_obj:=[{ptorus_pts},{ptorus_fcs},ptorus_move,0,
  202.            0,-1000,-1800,
  203.            0,0,0]:robject
  204.  
  205. vector_obj:=[{vector_pts},{vector_fcs},vector_move,0,
  206.              -1000,0,-1000,
  207.              0,0,0]:robject
  208.  
  209. mycoltab:=[0,  0, 0, 0,   /* Register, Rot,Grün,Blau */
  210.            1, 0,12,12,
  211.            2, 0,11,11,
  212.            3, 0,10,10,
  213.            4,  0, 9, 9,
  214.            5,  0, 8, 8,
  215.            6,  0, 7, 7,
  216.            7,  15, 6, 6,
  217.           -1]:INT
  218.  
  219. pcone_world:=[1,1,pcone_obj]:rworld
  220. pcylinder_world:=[1,1,pcylinder_obj]:rworld
  221. pwheel_world:=[1,1,pwheel_obj]:rworld
  222. phsphere_world:=[1,1,phsphere_obj]:rworld
  223. psphere1_world:=[1,1,psphere1_obj]:rworld
  224. psphere2_world:=[1,1,psphere2_obj]:rworld
  225. ppyramid_world:=[1,1,ppyramid_obj]:rworld
  226. ptetra_world:=[1,1,ptetra_obj]:rworld
  227. ptorus_world:=[1,1,ptorus_obj]:rworld
  228. vector_world:=[1,1,vector_obj]:rworld
  229. ENDPROC
  230. /**/
  231. /*"main()"*/
  232. PROC main()
  233.     DEF b
  234.     p_InitData()
  235.     IF vecbase:=OpenLibrary('vector.library',1)
  236.         WriteF('Vector.library open.\n')
  237.         IF viewstruct:=OpenVScreen(myvscreen)
  238.             WriteF('viewstruct ok\n')
  239.             SetColors(viewstruct,mycoltab)
  240.             AutoScaleOn(myvscreen.viewmodes)
  241.             DoAnim(vector_world)
  242.             DoAnim(pcone_world)
  243.             DoAnim(pcylinder_world)
  244.             DoAnim(pwheel_world)
  245.             DoAnim(phsphere_world)
  246.             DoAnim(psphere1_world)
  247.             DoAnim(psphere2_world)
  248.             DoAnim(ppyramid_world)
  249.             p_SameCoord(ptetra_obj,ppyramid_obj)
  250.             DoAnim(ptetra_world)
  251.             DoAnim(ptorus_world)
  252.             vector_obj.o_pos_x:=-1000
  253.             vector_obj.o_pos_y:=0
  254.             vector_obj.o_pos_z:=-1000
  255.             vector_obj.o_rot_x:=0
  256.             vector_obj.o_rot_y:=0
  257.             vector_obj.o_rot_z:=0
  258.             DoAnim(vector_world)
  259.         ELSE
  260.             WriteF('Screen failed !\n')
  261.         ENDIF
  262.         IF viewstruct THEN CloseVScreen()
  263.     ELSE
  264.         WriteF('vector.library ?\n')
  265.     ENDIF
  266.     IF vecbase THEN CloseLibrary(vecbase)
  267. ENDPROC
  268. /**/
  269. /*"p_SameCoord(dest:PTR TO robject,source:PTR TO robject)"*/
  270. PROC p_SameCoord(dest:PTR TO robject,source:PTR TO robject)
  271.     dest.o_pos_x:=source.o_pos_x
  272.     dest.o_pos_y:=source.o_pos_y
  273.     dest.o_pos_z:=source.o_pos_z
  274. ENDPROC
  275. /**/
  276. /*"p_WriteFCoord(source:PTR TO robject)"*/
  277. PROC p_WriteFCoord(source:PTR TO robject)
  278.     DEF rx,ry,rz
  279.     DEF ox,oy,oz
  280.     IF source.o_pos_x>32768 THEN rx:=source.o_pos_x-65536 ELSE rx:=source.o_pos_x
  281.     IF source.o_rot_x>32768 THEN ox:=source.o_rot_x-65536 ELSE ox:=source.o_rot_x
  282.     IF source.o_pos_y>32768 THEN ry:=source.o_pos_y-65536 ELSE ry:=source.o_pos_y
  283.     IF source.o_rot_y>32768 THEN oy:=source.o_rot_y-65536 ELSE oy:=source.o_rot_y
  284.     IF source.o_pos_z>32768 THEN rz:=source.o_pos_z-65536 ELSE rz:=source.o_pos_z
  285.     IF source.o_rot_z>32768 THEN oz:=source.o_rot_z-65536 ELSE oz:=source.o_rot_z
  286.     WriteF('PosX :\d\n',rx)
  287.     WriteF('PosY :\d\n',ry)
  288.     WriteF('PosZ :\d\n',rz)
  289.     WriteF('=====\n')
  290.     WriteF('RotX :\d\n',ox)
  291.     WriteF('RotY :\d\n',source.o_rot_y)
  292.     WriteF('RotZ :\d\n',source.o_rot_z)
  293. ENDPROC
  294. /**/
  295.  
  296.  
  297. /*"vbi()"*/
  298. PROC vbi()
  299.     IF CtrlC()
  300.         RotateX(0,0,0,0,0,0,10)
  301.     ENDIF
  302. ENDPROC
  303. /**/
  304. /*"Include Binaires"*/
  305. pcone_pts:       INCBIN 'Pcone_pts.bin'
  306. pcone_fcs:       INCBIN 'PCone_fcs.bin'
  307. pcube_pts:       INCBIN 'PCube_pts.bin'
  308. pcube_fcs:       INCBIN 'Pcube_fcs.bin'
  309. pcylinder_pts:   INCBIN 'PCylinder_pts.bin'
  310. pcylinder_fcs:   INCBIN 'PCylinder_fcs.bin'
  311. phsphere_pts:    INCBIN 'PHsphere_pts.bin'
  312. phsphere_fcs:    INCBIN 'PHSphere_fcs.bin'
  313. ppyramid_pts:    INCBIN 'PPyramid_pts.bin'
  314. ppyramid_fcs:    INCBIN 'PPyramid_fcs.bin'
  315. psphere1_pts:    INCBIN 'PSphere1_pts.bin'
  316. psphere1_fcs:    INCBIN 'PSphere1_fcs.bin'
  317. psphere2_pts:    INCBIN 'PSphere2_pts.bin'
  318. psphere2_fcs:    INCBIN 'PSphere2_fcs.bin'
  319. psphere3_pts:    INCBIN 'PSphere3_pts.bin'
  320. psphere3_fcs:    INCBIN 'PSphere3_fcs.bin'
  321. ptetra_pts:      INCBIN 'PTetra_pts.bin'
  322. ptetra_fcs:      INCBIN 'PTetra_fcs.bin'
  323. ptorus_pts:      INCBIN 'PTorus_pts.bin'
  324. ptorus_fcs:      INCBIN 'PTorus_fcs.bin'
  325. pwheel_pts:      INCBIN 'PWheel_pts.bin'
  326. pwheel_fcs:      INCBIN 'PWheel_fcs.bin'
  327. vector_pts:      INCBIN 'Vector_pts.bin'
  328. vector_fcs:      INCBIN 'Vector_fcs.bin'
  329. /**/
  330.